home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 May: Tool Chest / Developer CD Series Tool Chest (Apple Computer)(May 1999).iso / Tool Chest / Games / Game Sample Code / ZAM 1.0a13 / GameSource / SpriteColission.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-16  |  922 b   |  27 lines  |  [TEXT/KAHL]

  1. #include "ZAMProtos.h"
  2.  
  3.  
  4. void CollideSpriteLayer(spriteLayerPtr sprLayer1, spriteLayerPtr sprLayer2)
  5. /*
  6.     VERY Simple colission detection.  A sprite is not checked unless it has
  7.     a callback, so if you have things that can never be collided with,
  8.     don't give them a colission callback.  Layers are collided against each other,
  9.     so sprites in the same layer can never collide.
  10. */
  11. {
  12.     spritePtr    spr1, spr2;
  13.     Rect        sectArea;
  14.     
  15.     for(spr1 = sprLayer1->sprites; spr1 != nil; spr1 = spr1->next)
  16.         for(spr2 = sprLayer2->sprites; spr2 != nil; spr2 = spr2->next)
  17.             if(spr1->collideHandler || spr2->collideHandler) {
  18.                 if( SectRect(&spr1->bounds, &spr2->bounds, §Area) ) {
  19.                     /* we have a rectangle colission  - call the handlers if installed */
  20.                     if(spr1->collideHandler)
  21.                         (*spr1->collideHandler)(spr1, spr2, §Area);
  22.                     if(spr2->collideHandler)
  23.                         (*spr2->collideHandler)(spr2, spr1, §Area);
  24.                 }
  25.             }
  26.  
  27. }